home *** CD-ROM | disk | FTP | other *** search
/ Mac Magazin/MacEasy 32 / Mac Magazin and MacEasy Magazine CD - Issue 32.iso / Grafik & Text / OzTeX3.0 / Metafont / Inputs / ec / excligtb.mf < prev    next >
Text File  |  1997-03-16  |  8KB  |  264 lines

  1. % excligtb.mf
  2. %
  3. % (c) Copyright 1995, 1996, 1997 J"org Knappen
  4. % (c) Copyright 1990, 1992 Norbert Schwarz
  5. %
  6. % This file is part of ecfonts version 1.0
  7. %
  8. % Please read the files 00readme.txt, 00inst.txt, 00error.txt, and
  9. % copyrite.txt for further information
  10. %
  11. % You find some documentation in ecdoc.tex (needs LaTeX2e)
  12. %
  13. % Content:
  14. %
  15. %  ligatures and kerning for "caps and small caps" fonts
  16. %
  17. %     This file should not be called for monospaced fonts !
  18. %
  19. % The following ligatures are integrated:
  20. %
  21. %   --
  22. %   ---
  23. %   -<hyphenchar>
  24. %   >>
  25. %   <<
  26. %   ``
  27. %   ''
  28. %   ,,
  29. %   !` and ?`
  30. %
  31.  
  32. version_check(1,0);  % |version_check| was introduced in dc1.3
  33.  
  34. ligtable
  35.     "-":  "-" =: oct"025",
  36.      oct"177" =: oct"177"; % <hyphen><hyphenchar> => <hyphenchar>
  37. ligtable
  38.     oct"025": "-"=:oct"026";  % "---"  => emdash
  39.  
  40. ligtable "<": "<" =: oct"023";     % "<<"
  41. ligtable ">": ">" =: oct"024";     % ">>"
  42. ligtable ",": "," =: oct"022";     % ",,"
  43. ligtable "!": "`" =: oct"275";     % spanish shriek
  44. ligtable "?": "`" =: oct"276";     % spanish query
  45.  
  46.  
  47. ligtable
  48.     "`":  "`"=:oct"020",
  49.           oct"020" kern 2u#,
  50.           "?" kern 2u#,
  51.           "!" kern 2u#;
  52.  
  53. ligtable
  54.     "'":  "'"=:oct"021",
  55.           oct"021" kern 2u#,
  56.           "?" kern 2u#,
  57.           "!" kern 2u#;
  58. %
  59. %
  60. def lig_o_table (expr k) =
  61.              "o" kern k,  oct"256" kern k, oct"362" kern k, oct"363" kern k,
  62.                           oct"364" kern k, oct"365" kern k, oct"366" kern k,
  63.                           oct"367" kern k
  64. enddef;
  65. def lig_co_table =
  66.              "o":  oct"256": oct"362": oct"363":
  67.                           oct"364": oct"365": oct"366":
  68.                           oct"367"
  69. enddef;
  70. %
  71. %
  72. def lig_a_table (expr k) =
  73.            "a" kern k,    oct"240" kern k, oct"241" kern k, oct"340" kern k,
  74.                           oct"341" kern k, oct"342" kern k,
  75.                           oct"343" kern k, oct"344" kern k, oct"345" kern k,
  76.                           oct"346" kern k
  77. enddef;
  78. def lig_A_table (expr k) =
  79.              "A" kern k, oct"200" kern k, oct"201" kern k, oct"300" kern k,
  80.               oct"301" kern k, oct"302" kern k,
  81.               oct"303" kern k, oct"304" kern k, oct"305" kern k
  82. enddef;
  83. def lig_ca_table =
  84.            "a":    oct"241": oct"242": oct"340":
  85.                           oct"341": oct"342":
  86.                           oct"343": oct"344": oct"345":
  87.                           oct"346"
  88. enddef;
  89. def lig_c_table (expr k) =
  90.            "c" kern k,   oct"242" kern k, oct"243" kern k, oct"347" kern k
  91. enddef;
  92. def lig_CGQ_table (expr k) =
  93.            "C" kern k, "G" kern k, oct"202" kern k, oct"203" kern k,
  94.                          oct"207" kern k, oct"307" kern k, "Q" kern k
  95. enddef;
  96.  
  97. def lig_e_table (expr k)=
  98.              "e" kern k, oct"245" kern k, oct"246" kern k, oct"350" kern k,
  99.                          oct"351" kern k, oct"352" kern k, oct"353" kern k
  100. enddef;
  101.  
  102. def lig_u_table (expr k)=
  103.              "u" kern k, oct"266" kern k, oct"267" kern k, oct"371" kern k,
  104.                          oct"372" kern k, oct"373" kern k, oct"374" kern k
  105. enddef;
  106.  
  107. def lig_cA_table =
  108.              "A": oct"200": oct"201": oct"300": oct"301": oct"302":
  109.              oct"303": oct"304": oct"305"
  110. enddef;
  111.  
  112. def lig_cO_table =
  113.              "O": oct"216": oct"322": oct"323": oct"324": oct"325":
  114.                   oct"326": oct"330"
  115. enddef;
  116.  
  117. def lig_O_table (expr k) =
  118.          "O" kern k,
  119.                   oct"216" kern k,  oct"322" kern k,  oct"323" kern k,
  120.                   oct"324" kern k,  oct"325" kern k,
  121.                   oct"326" kern k,  oct"330" kern k
  122. enddef;
  123.  
  124. def lig_U_table (expr k) =
  125.          "U" kern k, oct"226" kern k, oct"227" kern k, oct"331" kern k,
  126.                      oct"332" kern k, oct"333" kern k, oct"334" kern k
  127. enddef;
  128.  
  129. %
  130. %
  131. %
  132. %
  133.  k#:=-.5u#; ku#:=-1.0u#; kk#:=-1.5u#; kkk#:=-2u#; % four degrees of kerning
  134.  
  135. ligtable boundarychar:
  136.    oct"020" kern -kk#, oct"021" kern -kk#, oct"022" kern -kk#,
  137.    oct"055" kern -kk#, oct"140" kern -kk#, oct"047" kern -kk#;
  138.  
  139. ligtable oct"022":
  140.    oct"015" kern 2u#, "," kern 2u#,
  141.          oct"015":
  142.    oct"022" kern 2u#,
  143.    "y" kern ku#, oct"270" kern ku#, oct"375" kern ku#,
  144.    "v" kern ku#, "w" kern k#, "V" kern kkk#, "W" kern kk#, "Y" kern kk#,
  145.    oct"230" kern kk#, oct"335" kern kk#,
  146.    lig_O_table(k#), lig_CGQ_table(k#),
  147.    boundarychar kern -kk#;
  148.  
  149. ligtable oct"020":
  150.    oct"140" kern 2u#, oct"020" kern 2u#, boundarychar kern -kk#;
  151.  
  152. ligtable oct"021":
  153.    oct"047" kern 2u#, oct"021" kern 2u#, boundarychar kern -kk#;
  154.  
  155. ligtable oct"024": % ">>"
  156.    "." kern kk#, "," kern kk#;
  157.  
  158.  ligtable
  159.         "P":
  160.         "T":
  161.         "Y":    "a" kern kk#,
  162.                 lig_A_table(kk#);
  163.  ligtable
  164.         "F":
  165.         "V":
  166.         "W":
  167.                 if serifs:
  168.                 lig_a_table(kkk#),
  169.                 lig_A_table(kkk#),
  170.                 else:
  171.                 lig_a_table(kk#),
  172.                 lig_A_table(kk#),
  173.                 fi
  174.         "K":
  175.         "X":    lig_o_table(k#),
  176.                 lig_O_table(k#),
  177.                 lig_c_table(k#),
  178.                 lig_CGQ_table(k#),
  179.                 "g" kern k#, oct"247" kern k#,
  180.                 "q" kern k#;
  181.  ligtable
  182.         "O":
  183.         "D":    "x" kern k#,
  184.                 "X" kern k#,
  185.                 "w" kern k#,
  186.                 "W" kern k#,
  187.                 lig_a_table(k#),
  188.                 lig_A_table(k#),
  189.                 "v" kern k#,
  190.                 "V" kern k#,
  191.                 "y" kern k#, oct"375" kern k#, oct"270" kern k#,
  192.                 "Y" kern k#, oct"335" kern k#, oct"230" kern k#;
  193.  ligtable
  194.         lig_cA_table:
  195.                 if serifs:
  196.                 "R":
  197.                 fi
  198.                 lig_c_table(k#),
  199.                 lig_CGQ_table(k#),
  200.                 lig_o_table(k#),
  201.                 lig_O_table(k#),
  202.                 "g" kern k#,  oct"247" kern k#,
  203.                 lig_u_table(k#),
  204.                 lig_U_table(k#),
  205.                 "q" kern k#,
  206.         "L":
  207.                 "T" kern kk#, oct"224" kern kk#, oct"225" kern kk#,
  208.                 "t" kern kk#, oct"264" kern kk#, oct"265" kern kk#,
  209.                 "Y" kern kk#, oct"230" kern kk#, oct"335" kern kk#,
  210.                 "y" kern kk#, oct"270" kern kk#, oct"375" kern kk#,
  211.                 "V" kern kkk#,
  212.                 "v" kern kkk#,
  213.                 "W" kern kkk#,
  214.                 "w" kern kkk#;
  215.  ligtable
  216.         "I":
  217.                 "I" kern -k#; % Richard III
  218.  
  219.  k#:=-.5u#; kk#:=-1.5u#; kkk#:=-2u#; % three degrees of kerning
  220.  
  221.  ligtable
  222.         "p":
  223.         "t":
  224.         "y":    lig_a_table(kk#);
  225.  ligtable
  226.         "f":
  227.         "v":
  228.         "w":
  229.                 if serifs:
  230.                 lig_a_table(kkk#)
  231.                 else:
  232.                 lig_a_table(kk#)
  233.                 fi,
  234.         "k":
  235.         "x":    lig_o_table(k#),
  236.                 lig_c_table(k#),
  237.                 "g" kern k#, oct"247" kern k#,
  238.                 "q" kern k#;
  239.  ligtable
  240.         lig_co_table:
  241.         "d":    "x" kern k#,
  242.                 "w" kern k#,
  243.                 lig_a_table(k#),
  244.                 "v" kern k#,
  245.                 "y" kern k#, oct"270" kern k#, oct"375" kern k#;
  246.  ligtable
  247.         lig_ca_table:
  248.                 if serifs: "r": fi
  249.                 lig_c_table(k#),
  250.                 lig_o_table(k#),
  251.                 "g" kern k#, oct"247" kern k#,
  252.                 lig_u_table(k#),
  253.                 "q" kern k#,
  254.         "l":    "'" kern kk#,
  255.                 "t" kern kk#,  oct"264" kern kk#, oct"265" kern kk#,
  256.                 "y" kern kk#,  oct"270" kern k#, oct"375" kern k#,
  257.                 "v" kern kkk#,
  258.                 "w" kern kkk#;
  259.  ligtable
  260.         "i":    "i" kern -k#; % skiing
  261.  
  262.  
  263. endinput;
  264.